1.3. 任务调度--LSF
EDA平台通过IBM Platform LSF来进行任务调度管理
平台队列
目前平台主要配置了以下队列:
⦁ cpu: 由平台的10台cpu节点组成的队列
⦁ bmcpu: 由平台的10台bmcpu节点组成的队列
⦁ gpu: 由平台的4台gpu节点组成的队
⦁ interactive: 交互式任务队列
⦁ normal: 普通队列,未指定队列时作业会提交到这条队列
常用操作:
1. 提交作业bsub:
bsub -o output.log -e error.log echo hello-world
-o output.log: 作业的标准输出重定向到 output.log
-e error.log: 作业的错误输出重定向到error.log
bsub -Is myjob.sh
-Is: 提交的作业交互方式运行,允许用户与作业进行交互
bsub -q [cpu | bmcpu | gpu] -m cpuXX
-q cpu/bmcpu/gpu: 指定作业提交到哪个队列
cpu队列: 10台 cpu节点,cpu01 ~ cpu10。每台cpu节点的硬件配置:32core * 2 @2.0GHz , 1T RAM
bmcpu队列:10台 bmcpu节点,bmcpu01 ~ bmcpu10。每台cpu节点的硬件配置:32core * 2 @2.0GHz , 2T RAM
gpu队列: 4台gpu节点,gpu01 ~ gpu04,每台gpu节点的硬件配置:28core * 2 @2.6GHz, 512G RAM , A30 * 8
-m gpu01: 指定作业在节点gpu01上运行。 通常运行docker作业时,为了避免每次都从本地仓库pull image,会指定作业的运行节点
bsub -n 8 -gpu "num=2"
-n 8 : 申请8个核
-gpu "num=2": 申请2个A30 GPU卡。需要联合 “-q gpu" 或者 " -m gpu0X"调用
2. 查看作业状态,强制结束作业
bjobs & bkill $job-id
[simonyjhe@manager01 ~]$ bsub -q cpu sleep 180 &
[1] 10190
[simonyjhe@manager01 ~]$ Job <10190> is submitted to queue <cpu>.
[1]+ 完成 bsub -q cpu sleep 180
[simonyjhe@manager01 ~]$ bjobs
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
10190 simonyj RUN normal manager01 cpu02 sleep 180 Dec 1 01:08
[simonyjhe@manager01 ~]$ bkill 10190
Job <10190> is being terminated
[simonyjhe@manager01 ~]$ bjobs
No unfinished job found
[simonyjhe@manager01 ~]$
3. 查看节点的负载:bhosts
4. 任务提交模板:
#!/bin/sh
#BSUB -R "select[gpu_musei<Used_memory] (i, gpu_id; used_memory:24576-Required_mem(MiB)"
#BSUB -m "gpu01" # (CAN BE "cpu0x, gpu0x, bmcpu0x", use bhosts for detail)
#BSUB -J YOUR_JOB_NAME
#BSUB -n JOB_NUM(upper limit: 16/user)
#BSUB -gpu "num=NUM"
#BSUB -o YOUR_OUTPUT_FILE
#BSUB -e YOUR_ERROR_FILE
#BSUB -W RUN_TIME_LIMIT
module load anaconda3
module load YOUR_CUDA_VERSION #(ps: check the available packages by "module avail")
source activate YOUR_PYTHON_ENV YOUR_COMMAND